#pragma once
#include "serialportdefine.h"
#include "serialporthandle.h"

// 数据处理类
#define  SERIALPORTCONFIG_INSTANCE SerialportConfig::instance()
class SerialportConfig : public QObject
{
    Q_OBJECT
public:
    static SerialportConfig* instance();
    ~SerialportConfig();

private:
    static std::once_flag m_initFlag;
    static std::unique_ptr<SerialportConfig> m_pInstance;
    SerialportConfig(QObject *parent = nullptr);

public:
    // 数据获取
    bool getSerialPortInfo(QVector<PSeriaPortInfo> &info);
    // 新数据赋值
    bool setSerialPortInfo(const QVector<PSeriaPortInfo> info);
    // 读取配置文件
    QString searchSystemConfigFile();
    // 获取当前毫秒
    QString getMilliseconds(QDateTime dataTime);
    // 疲劳驾驶参数获取
    bool getSettingInfo(PSettingInfo &info);
    // 疲劳驾驶参数保存
    bool setSettingInfo(const PSettingInfo info,const QString type);
    // 读取配置参数路径
    QString searchSettingConfigFile();
    // 系统参数获取
    bool getSysParamInfo(PSysparamInfo &info);

private:
    // 加载数据
    bool loadSerialPortInfo();
    // 新数据保存
    bool saveSerialPortInfo();

private:
    QVector<PSeriaPortInfo>	m_vecSerPortInfo;
    QMutex  serialInfoMutex;
};

